home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////
- //
- // Module : REP00.PRG
- //
- // Created by SUMMER'93 (c) on Fri Nov 26 14:50:48 1993
- //
- ///////////////////////////////////////////////////////////////
- #include "snj.ch"
- // The following vars were made static because they were 'inherited'
- // SWIDTH BWIDTH
- // The following statics were declared 'PUBLIC' in the S87 code
- // OR were private and inherited by called functions
- // If they are used outside this module there will be a set/get
- // function with the same name as the var in this module
- static REPHD1, REPHD2, REPHD3, REPHD4, REPHD5, SWIDTH, BWIDTH
- // R E P 0 0
- procedure REPMAIN
- // Calls: QBPROMPT REPARAM REPWIP REPLIST REPREV
- // Called By: BODYWORK
- // Main controlling routine for reports
- local REPCOM, CGROUP, STARTD, FINISHD, OLDSCR
-
-
- SWIDTH := BWIDTH := 8
- CGROUP := space(4 )
- STARTD := FINISHD := blank(date())
- set deleted on
- @ 4, 22 clear to 20, 58
-
- do while .t.
- REPHD1 := REPHD2 := REPHD3 := REPHD4 := REPHD5 := ""
-
- GETOUT( .f. )
- REPCOM := QBPROMPT( "Current Work|List|Revenue|Quit|", ;
- "Reports can be between two dates, and for a Customer type", 1 )
-
- do case
- case REPCOM = 1 // Work in Progress
- do REPARAM with CGROUP, STARTD, FINISHD, "Work in Progress"
- if !GETOUT()
- save screen to OLDSCR
- do REPWIP with CGROUP, STARTD, FINISHD
- restore screen from OLDSCR
- endif
- case REPCOM = 2
- do REPARAM with CGROUP, STARTD, FINISHD, "List of Invoices"
- if !GETOUT()
- save screen to OLDSCR
- do REPLIST with CGROUP, STARTD, FINISHD
- restore screen from OLDSCR
- endif
- case REPCOM = 3
- do REPARAM with CGROUP, STARTD, FINISHD, "Invoice Revenue"
- if !GETOUT()
- save screen to OLDSCR
- do REPREV with CGROUP, STARTD, FINISHD
- restore screen from OLDSCR
- endif
- case REPCOM = 4 .or. REPCOM = 0
- exit
- endcase
- close database
- enddo
- return
-
- //**********************************************************************
-
- procedure REPARAM( CGROUP, STARTD, FINISHD, RTITLE ) // Amended by SUMMER93
- // Calls: QBLAYOUT QBBOX VCUSTTYP QB2DATES QBREAD QBPROMPT QBMESS QBPRCTL
- // Called By: REPMAIN
- local m, RORDER, GETLIST
- GETLIST := {}
-
- m := "Choose Order for Report"
- do QBLAYOUT with RTITLE
- do QBBOX with 40
-
- CGROUP := blank( CGROUP )
- @ 5, 26 say "Customer Group:" get CGROUP picture "!!!!" valid VCUSTTYP( 5, 42;
- , .t. )
-
- if !"Progress" $ RTITLE
- @ 7, 27 say "Start date:"
- @ 9, 26 say "Finish date:"
- do QB2DATES with "Group, Start & Finish dates - blank implies ALL", 7, 39;
- , STARTD, 9, 39, FINISHD
- else
- do QBREAD with "Enter Customer Group - blank implies ALL" , , @GETLIST
- // Call amended
- STARTD := blank( date())
- FINISHD := ctod( "31/12/99" )
- endif
- if !GETOUT()
- CGROUP := MCUSTTYP()
- if empty( CGROUP )
- RORDER := substr( "DCQ", QBPROMPT("Date|Customer group|Quit|", m, 1 );
- , 1 )
- REPHD3 := "Listing for ALL Customer Groups"
- else
- RORDER := "D"
- REPHD3 := "Listing for Customer Group " + trim( MCDESC() )
- endif
- GETOUT( ( QBRESP() = "Q" ) )
- endif
- if GETOUT()
- return
- endif
-
- REPHD1 := QBTITLE() + space( 10 ) + RTITLE + space( 10 ) + QBDATE()
- REPHD3 := center( trim(REPHD3 ) + " - Ordered by " + iif(RORDER = "C", ;
- "Group", "Date" ), 79 )
-
- select 0
- use INVOICE
- set softseek on
- do case
- case RORDER = "D"
- set index to INVDATE
- seek dtos( STARTD ) + trim( CGROUP )
- GETOUT( ( eof()) .or.( INVOICE->DATEOUT > FINISHD ) )
- case RORDER = "C"
- set index to INVCUST
- seek "! " + dtos( STARTD )
- if found( )
- do while( !eof()) .and.( INVOICE->DATEOUT < STARTD )
- skip
- enddo
- GETOUT( ( INVOICE->DATEOUT > FINISHD ) .or.( eof()) )
- endif
- endcase
-
- if GETOUT()
- do QBMESS with "No matching Invoices", COLFLASH() , 5
- else
- select 0
- use PARTS index PARTINV alias PARTS
- select INVOICE
- do QBPRCTL with " "
- endif
-
- return
-
- //**********************************************************************
-
- function REPMORE( STARTD, FINISHD ) // Amended by SUMMER93
- // Calls:
- // Called By: REPLIST REPREV
- // The following locals have been declared by Summer'93
- // RETVAL
- local RETVAL
-
- RETVAL := ( INVOICE->DATEOUT >= STARTD .and. INVOICE->DATEOUT <= FINISHD )
- RETVAL := RETVAL .and.( !(eof().or. GETOUT() ))
-
- return RETVAL
-
- //**********************************************************************
-
- function REPGROUP( CGROUP ) // Amended by SUMMER93
- // Calls:
- // Called By: REPLIST REPREV REPWIP
- // The following locals have been declared by Summer'93
- // RETVAL
- local RETVAL
-
- RETVAL := ( empty(CGROUP ).or. CGROUP = INVOICE->CUSTTYPE )
-
- return RETVAL
-
- //**********************************************************************
-
- procedure REPLIST( CGROUP, STARTD, FINISHD ) // Amended by SUMMER93
- // Calls: QBPUTH REPMORE REPGROUP QBPUTL QBPRCTL
- // Called By: REPMAIN
- // List of Invoice between two dates for a customer type
- local m, LMARG
-
-
- LMARG := iif( PDEST() = "S", "", space(5 ))
- do QBPUTH with 1, LMARG + REPHD1
- do QBPUTH with 3, LMARG + REPHD3
- m := LMARG + "Invoice Owner Name" + space( 15 ) + ;
- "Vehicle Date in Date out"
- do QBPUTH with 5, m
- do QBPUTH with 6, " "
- do while REPMORE( STARTD, FINISHD )
- // 99999 XXXXXXXXXXXXXXXXXXXXXXXX X999XXXX 99/99/99 99/99/99
- if REPGROUP( CGROUP )
- m := LMARG + " "
- m := m + str( INVOICE->INVNO, 5 ) + " " + INVOICE->OWNNAME + " "
- m := m + INVOICE->REGNO + " " + dtoc( INVOICE->DATEIN ) + " "
- m := m + dtoc( INVOICE->DATEOUT )
- do QBPUTL with 1, m
- endif
- skip
- enddo
-
- do QBPRCTL with [R:Finished "Invoice List"]
-
- return
-
- //**********************************************************************
-
- procedure REPREV( CGROUP, STARTD, FINISHD ) // Amended by SUMMER93
- // Calls: QBPUTH REPMORE REPGROUP INVFILL INVTOTAL QBPUTL QBPRCTL
- // Called By: REPMAIN
- // Revenue for Customer group between two dates
- local TL, TP, TS, TV, to, TI, TT, m, LMARG
-
- TL := TP := TS := TV := to := TI := TT := 0
-
-
- LMARG := iif( PDEST() = "S", "", space(5 ))
- do QBPUTH with 1, LMARG + REPHD1
- do QBPUTH with 3, LMARG + REPHD3
- if PDEST() = "S"
- SWIDTH := 6
- BWIDTH := 8
- m := ;
- "Invoice Date Labour Total Special V A T Contributions Total"
- else
- SWIDTH := BWIDTH := 10
- m := LMARG + ;
- "Invoice D a t e s Labour Total Special V A T Contributions Total"
- endif
- do QBPUTH with 5, m
- if PDEST() = "S"
- m := "Number Out Charge Parts Mater'l Owner Ins Co"
- else
- m := LMARG + ;
- "Number In Out Charge Parts Mater'l Owner Ins Co"
- endif
- do QBPUTH with 6, m
- do QBPUTH with 7, " "
- // 99999 99/99/99 99/99/99 999999.99 999999.99 999999.99 999999.99 999999.99 999999.99 999999.99
- do while REPMORE( STARTD, FINISHD )
- if REPGROUP( CGROUP )
- INVFILL( .f. )
- do INVTOTAL with .f.
- m := LMARG + str( MINVNO() , 5 ) + iif( PDEST() = "S", "", " " + dtoc;
- (MDATEIN() )) + " " + dtoc( MDATEOUT() )
- m := m + str( MLABOURT() , 10, 2 ) + str( MINSPART() + MOWNPART() , ;
- 10, 2 )
- m := m + str( MINSSPEC() + MOWNSPEC() , BWIDTH, 2 ) + str( IVATAMT() ;
- + OVATAMT() , BWIDTH, 2 )
- m := m + str( MOWNDUE() , BWIDTH, 2 ) + str( MINSDUE() , BWIDTH, 2 );
- + str( MINVTOTAL() , 10, 2 )
- TL := TL + MLABOURT()
- TP := TP + MINSPART() + MOWNPART()
- TS := TS + MINSSPEC() + MOWNSPEC()
- TV := TV + IVATAMT() + OVATAMT()
- to = to + MOWNDUE()
- TI := TI + MINSDUE()
- TT := TT + MINVTOTAL()
- do QBPUTL with 1, m
- endif
- skip
- enddo
-
- m := LMARG + space( iif(PDEST() = "S", 8, 17 )) + "Totals" + str( TL, 10, 2 );
- + str( TP, 10, 2 ) + str( TS, BWIDTH, 2 ) + str( TV, BWIDTH, 2 )
- m := m + str( to, BWIDTH, 2 ) + str( TI, BWIDTH, 2 ) + str( TT, 10, 2 )
- do QBPUTL with 2, m
-
- do QBPRCTL with [R:Finished "Revenue Report"]
-
- return
-
- //**********************************************************************
-
- procedure REPWIP( CGROUP, STARTD, FINISHD ) // Amended by SUMMER93
- // Calls: QBPUTH REPGROUP INVFILL INVTOTAL QBPUTL QBPRCTL
- // Called By: REPMAIN
- // Work in Progress report
- local TL, TP, TS, TV, to, TI, TT, m, LMARG
- // Revenue for Customer group between two dates
-
- TL := TP := TS := TV := to := TI := TT := 0
-
- LMARG := iif( PDEST() = "S", "", space(5 ))
-
- do QBPUTH with 1, LMARG + REPHD1
- do QBPUTH with 3, LMARG + REPHD3
- m := LMARG + ;
- "Invoice D a t e s Labour Total Special V A T Contributions Total"
- do QBPUTH with 5, m
- m := LMARG + ;
- "Number In Out Charge Parts Mater'l Owner Ins Co"
- do QBPUTH with 6, m
- do QBPUTH with 7, " "
- // 99999 99/99/99 99/99/99 9999.99 9999.99 9999.99 9999.99 9999.99 9999.99 9999.99
-
- do while !eof( )
- if FIELD->INVNO <> 0 .and. FIELD->DATEINV = ctod( "" ).and. REPGROUP( ;
- CGROUP )
- INVFILL( .f. )
- do INVTOTAL with .f.
- m := LMARG + str( MINVNO() , 5 ) + " " + dtoc( MDATEIN() ) + " " + ;
- dtoc( MDATEOUT() )
- m := m + str( MLABOURT() , BWIDTH, 2 ) + str( MINSPART() + ;
- MOWNPART() , BWIDTH, 2 )
- m := m + str( MINSSPEC() + MOWNSPEC() , SWIDTH, 2 ) + str( IVATAMT() ;
- + OVATAMT() , BWIDTH, 2 )
- m := m + str( MOWNDUE() , SWIDTH, 2 ) + str( MINSDUE() , BWIDTH, 2 );
- + str( MINVTOTAL() , BWIDTH, 2 )
- TL := TL + MLABOURT()
- TP := TP + MINSPART() + MOWNPART()
- TS := TS + MINSSPEC() + MOWNSPEC()
- TV := TV + IVATAMT() + OVATAMT()
- to = to + MOWNDUE()
- TI := TI + MINSDUE()
- TT := TT + MINVTOTAL()
- do QBPUTL with 1, m
- endif
- skip
- enddo
-
- m := LMARG + space( 17 ) + "Totals" + str( TL, BWIDTH, 2 ) + str( TP, BWIDTH, ;
- 2 ) + str( TS, SWIDTH, 2 ) + str( TV, BWIDTH, 2 )
- m := m + str( to, SWIDTH, 2 ) + str( TI, BWIDTH, 2 ) + str( TT, BWIDTH, 2 )
- do QBPUTL with 2, m
-
- do QBPRCTL with [R:Finished "Current Work"]
-
- return
-
- // End of file
-